#ifndef LIB_AX_SOLVE_PARAM_POINT_H
#define LIB_AX_SOLVE_PARAM_POINT_H
#include "libAcoustX/core/param/SolveParam_Line.h"
#include "libAcoustX/core/Source.h"
#include "libGeoutils/shape/Rectangle.h"

#define AX_PARAM_TARGET_RANGE_DISTANCE_KEY		"target_range_km"
#define AX_PARAM_TARGET_START_BEARINGDEG_KEY	"target_start_bearing_deg"
#define AX_PARAM_TARGET_BEARING_COUNT_KEY		"target_bearing_count"

namespace ax {
namespace param {
class AX_EXPORT Point : public ax::param::Line
{
public:
	using sptr = std::shared_ptr<Point>;
	using csptr = std::shared_ptr<const Point>;

	Point();
	virtual ~Point();

	std::map<double, param::Line::sptr> toLineParams(ax::core::Source::sptr source) const;
	geo::shape::Rectangle::sptr getBound(ax::core::Source::sptr source) const;

	QUICK_PROP_SETGET(double, TargetRangeDistanceKm, AX_PARAM_TARGET_RANGE_DISTANCE_KEY)
	QUICK_PROP_SETGET(double, TargetStartBearingDeg, AX_PARAM_TARGET_START_BEARINGDEG_KEY)
	QUICK_PROP_SETGET(int, TargetBearingCount, AX_PARAM_TARGET_BEARING_COUNT_KEY)

protected:

private:

};

} // namespace param
} // namespace ax

#endif // !LIB_AX_SOLVE_PARAM_POINT_H
